class Factory {
    constructor(role: string) {
        const s = new (<any>this)[role]();
        return s;
    }
    static instance(role: string) {
        return new Factory(role);
    }
}

class SuperAdmin {
    name = "超级管理员";
    viewPage = ['首页', '通讯录', '发现页', '应用数据', '权限管理']
}

{
    class Admin {
        name = '管理员';
        viewPage = ['首页', '权限管理']
    }
    
    let FactoryHandler = {
        SuperAdmin,
        Admin
    }
    
    // prototype 属性是readonly， 所以，利用assign 拓展prototype对象上的方法
    Object.assign(Factory.prototype, FactoryHandler)
    
    
    console.log(Factory.instance('Admin'))
}




